package org.ytor.core.sysapi.codegen.service;

import org.ytor.core.sysapi.codegen.model.ColumnMeta;
import org.ytor.core.sysapi.codegen.model.TableMeta;

import java.sql.SQLException;
import java.util.List;

/**
 * created by yangtong on 2025/4/6 上午1:32
 * <br/>
 * 获取表的元数据
 */
public interface IMetaService {
    /**
     * 获取所有数据库名称
     * @return
     */
    List<String> listCatalogs() throws SQLException;

    /**
     * 获取指定库下的所有模式名称
     */
    List<String> listSchemas(String catalog) throws SQLException;

    /**
     * 获取指定库的指定模式下面所有表名称
     */
    List<TableMeta> listTables(String catalog, String schema, String table) throws SQLException;

    /**
     * 获取指定表的所有列消息
     */
    List<ColumnMeta> listColumns(String catalog, String schema, String tableName) throws SQLException;

    /**
     * 获取指定表的所有主键
     */
    List<String> listPrimaryKeys(String catalog, String schema, String tableName) throws SQLException;

    /**
     * 获取指定列的详情
     */
    ColumnMeta getColumnDetail(String catalog, String schema, String tableName, String columnName);
}
